Pular para o conteúdo

Erro na função $dbh->fetchrow_array() [RESOLVIDO]

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

1. Erro na função $dbh->fetchrow_array() [RESOLVIDO]

Enviado em 15/07/2011 - 17:33h

Pessoal estou utilizando a função abaixo e esta dando o seguinte erro que também está mostrado abaixo.
Podem me ajudar fazer essa correção.


Obs.: O módulo DBI está instalado

==================================== Código da sub rotina =============================================

sub selectInstitution{

my $idInstitution = shift;

if(@_){
$idInstitution->{idInstitution};
}

$institution->setId($idInstitution);
$idInst= $institution->getId();

my $sql = "select * from `institution` WHERE idinstitution='$idInst'"; # este select mostra apenas 1 resultado
my $query = $dbh->prepare($sql);

if($query->execute){

my $data = $dbh->fetchrow_array(); # Esta é a linha 15 que aparece no erro abaixo

return $data;

}else{
return 'Não foi possível selecionar a instituição!';
}
}

============================= Erro quando uso a subrotina =======================================

Fri Jul 15 17:31:41 2011] [error] Can't locate object method "fetchrow_array" via package "DBI::db" at /var/www/bioinfo/controller//controllerInstitution.pm line 115.\n



Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Re: Erro na função $dbh->fetchrow_array() [RESOLVIDO]

Melhor resposta

Enviado em 26/07/2011 - 21:21h

bom vendo assim fica meio difícil de te ajudar, mas o método $dbh->fetchrow_array retorna um array e não um scalar... poderia ter utilizado o fetchrow_arrayref!

não entendi bem a estrutura que você esta utilizando ali em cima mas se você esta definindo um valor em um obj só pra usar o accessor dele... isso é dispensável! use a variável recebida da função, é muito mais simples, limpo e rápido.

outro ponto é que não vejo onde você inicia a conexão com o banco de dados.
eu faria esta implementação da seguinte maneira:


sub select_institution {
my $id = shift;

eval {
my $dbh = database_connect();
my $sth = $dbh->prepare( "SELECT * FROM institution WHERE idinstitution = '$id';" );
$sth->execute;

return $sth->fetchrow_arrayref;
};
if ( $@ ) {
die "Error selecting institution: $@ ";
}

return 0;
}

...

Bom, fica ai a dica... espero que lhe ajude em algo!

Forte abraço,

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder